package net.hn.hnms.biz.safety.trinity.group.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.hn.hnms.biz.safety.trinity.group.domain.HiddenDangerListPo;
import net.hn.hnms.biz.safety.trinity.group.domain.dto.HiddanDangerDto;
import net.hn.hnms.biz.safety.trinity.group.domain.dto.NameAndIntegerDto;
import net.hn.hnms.biz.safety.trinity.group.domain.vo.HiddanDangerVo;
import net.hn.hnms.sys.common.mybatis.core.page.PageQuery;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 隐患ListMapper
 */
public interface HiddenDangerListMapper extends BaseMapper<HiddenDangerListPo> {
    /**
     * 分页查询风险列表
     * @param pageQuery
     * @param hiddanDangerDto
     * @return
     */
    List<HiddanDangerVo> selectListPage(@Param("pageQuery") PageQuery pageQuery, @Param("hiddanDangerDto") HiddanDangerDto hiddanDangerDto);

    /**
     * 根据隐患状态统计
     * @param startDate
     * @param endDate
     * @return
     */
    List<NameAndIntegerDto> selectStatusSumByhiddenDangerStatus(@Param("mineCode") String mineCode, @Param("companyCode") String companyCode, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 根据隐患等级统计
     * @param startDate
     * @param endDate
     * @return
     */
    List<NameAndIntegerDto> selectlevelSumByhiddenDangerLevel(@Param("mineCode") String mineCode, @Param("companyCode") String companyCode, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 查询逾期 数量
     * @param companyCode
     * @param mineCode
     * @param startDay
     * @param endDay
     * @return
     */
    List<NameAndIntegerDto> overdueStatisticsByCompanyCount(@Param("companyCode") String companyCode, @Param("mineCode") String mineCode, @Param("startDay") Date startDay, @Param("endDay") Date endDay);

    /**
     * 查询一个月内的新增隐患
     * @param companyCode
     * @param mineCode
     * @param startDay
     * @param endDay
     * @return
     */
    List<NameAndIntegerDto> addHiddenDangerCountMonthByDay(@Param("companyCode") String companyCode, @Param("mineCode") String mineCode, @Param("startDay") Date startDay, @Param("endDay") Date endDay);

    /**
     * 查询一周新增隐患
     * @param companyCode
     * @param mineCode
     * @param startDay
     * @param endDay
     * @return
     */
    List<NameAndIntegerDto> addHiddenDangerCountByDay(@Param("companyCode") String companyCode, @Param("mineCode") String mineCode, @Param("startDay") Date startDay, @Param("endDay") Date endDay);

    /**
     * 获取新增隐患总数 日期为 曲线图时间结尾的所有时间
     * @param companyCode
     * @param mineCode
     * @param beDate
     * @param endDay
     * @return
     */
    Integer addHiddenDangerCount(@Param("companyCode") String companyCode, @Param("mineCode") String mineCode, @Param("beDate") Date beDate, @Param("endDay") Date endDay);


    /**
     * 隐患数量根据状态查询
     * @param companyCode
     * @param mineCode
     * @param startDay
     * @param endDay
     * @param status
     * @return
     */
    Integer selectCloseCountByStatus(@Param("companyCode") String companyCode, @Param("mineCode") String mineCode, @Param("startDay") Date startDay, @Param("endDay") Date endDay, @Param("status") String status);

    /**
     * 未闭合隐患数量
     * @param companyCode
     * @param mineCode
     * @param startDay
     * @param endDay
     * @param dangerStateNotclosedloop
     * @return
     */
    Integer selectNotCloseCount(@Param("companyCode") String companyCode, @Param("mineCode") String mineCode, @Param("startDay") Date startDay, @Param("endDay") Date endDay, @Param("dangerStateNotclosedloop") String dangerStateNotclosedloop);
}
